package adminModels

import (
	"appService/src/application/app/appModels"
	"errors"
	"xorm.io/builder"
	"xorm.io/xorm"
)

//api列表
type Api struct {
	Id          string `json:"id" xorm:"varchar(128) pk notnull unique"`          //id guid
	AuthGroupId string `json:"auth_group_id" xorm:"varchar(128)"`                 //所属权限组ID
	Title       string `json:"title" xorm:"varchar(128)"`                         //标题
	AuthCode    string `json:"auth_code" xorm:"varchar(50) notnull unique index"` //权限标识
	Router      string `json:"router" xorm:"varchar(255) notnull"`                //数据接口路由
	Method      string `json:"method" xorm:"varchar(255)"`                        //请求类型
	Visit       int    `json:"visit" xorm:"tinyint(1) notnull default(1)"`        //访问权限 1公开，2登录，3权限，4,系统管理员
	IsSign      int    `json:"is_sign" xorm:"tinyint(1) notnull default(1)"`      //是否需要签名 2不用，1需要
	IsShow      int    `json:"is_show" xorm:"tinyint(1) notnull default(1)"`      //是否显示 ，1显示 2隐藏
	Enable      int    `json:"enable" xorm:"tinyint(1) notnull default(1)"`       //是否启用 ，1启用 2禁用
	Sort        int    `json:"sort" xorm:"int(11) notnull default(1)"`            //排序
}

//添加数据校验
func (this *Api) AddValid() error {
	return nil
}

//修改数据校验
func (this *Api) EditValid() error {
	return nil
}

//获取模型
func (this *Api) Model() interface{} {
	return new(Api)
}

//获取模型切片
func (this *Api) Slice() interface{} {
	return new([]Api)
}

//初始化数据
func (this *Api) Init(db *xorm.Session, guid string, loginUser *appModels.UserInfo) error {
	this.Id = guid
	return nil
}

//添加之前调用，判断是否可添加，设置添加条件等
func (this *Api) AddWhere(db *xorm.Session, loginUser *appModels.UserInfo) error {
	return nil
}

//删除之前调用，判断是否可删除，设置删除条件等
func (this *Api) DeleteWhere(db *xorm.Session, loginUser *appModels.UserInfo, ids ...string) error {
	db.In("id", ids)
	return nil
}

//修改之前调用，判断是否可修改，设置修改条件
func (this *Api) EditWhere(db *xorm.Session, loginUser *appModels.UserInfo) error {
	if this.Id == "" {
		return errors.New("请选择要修改的数据")
	}
	db.Where(builder.Eq{"id": this.Id})
	db.Cols("visit,is_sign,is_show")
	return nil
}

//查询一条数据条件
func (this *Api) GetWhere(db *xorm.Session, loginUser *appModels.UserInfo, id string) error {
	return nil
}

//查询列表条件、查询分页数据条数条件
func (this *Api) ListWhere(db *xorm.Session, loginUser *appModels.UserInfo) error {
	db.Desc("sort")
	db.Where(builder.Eq{"auth_group_id": this.AuthGroupId})
	return nil
}

//查询分页时条件
func (this *Api) PaginateWhere(db *xorm.Session, loginUser *appModels.UserInfo) error {
	return nil
}
